using System;
using System.Collections.Generic;
using System.Text;
using ComposicionPedidos;
using PersistenciaPedidos;
using System.IO;

namespace AdministracionPreparacion
{
    public class  AdministradorPreparacion
    {
        private MaestroEmpanadero _maestroEmpanadero;
        private MaestroPizzero _maestroPizzero;

        public AdministradorPreparacion(List<ColaPreparacion> lista)
        {
            _maestroEmpanadero = new MaestroEmpanadero();
            _maestroEmpanadero.ColaPreparacion = lista[0];

            _maestroPizzero = new MaestroPizzero();
            _maestroPizzero.ColaPreparacion = lista[1];

            _maestroEmpanadero.Nombre = "Maestro Empanadero";
            _maestroPizzero.Nombre = "Maestro Pizzero";
        }

        public List<MaestroCocina> getMaestrosCocina()
        {
            List<MaestroCocina> lm = new List<MaestroCocina>();
            lm.Add(_maestroPizzero);
            lm.Add(_maestroEmpanadero);
            return lm;
        }

        public int preparar(MaestroCocina maestroCocina, IBuscadorPedido buscador)
        {
            PartePedido parte = maestroCocina.ColaPreparacion.getUltimo();

            if (parte != null)
            {
                int numeroPedido = parte.getNumero();

                Pedido pedido = buscador.getPedido(numeroPedido);

                if (pedido.Estado.Equals(TipoEstado.Asignado) && pedido.Tipo.Equals(TipoPedido.Mixto))
                {
                    pedido.Estado = TipoEstado.Preparando;
                }
                else
                {
                    pedido.Estado = TipoEstado.Preparado;
                    maestroCocina.ColaPreparacion.pop();
                }

                ParserXML parser = new ParserXML(Environment.CurrentDirectory + "/Pedidos/" + pedido.Numero + ".xml");

                File.Delete(Environment.CurrentDirectory + "/Pedidos/" + pedido.Numero + ".xml");

                parser.write(pedido);

                return pedido.Numero;
            }

            return 0;
        }
    }
}
